1. Field of the Invention
The present invention is directed to technology for detecting a stalled routine.
2. Description of the Related Art
As the Internet's popularity grows, more businesses are establishing a presence on the Internet. These businesses typically set up web sites that run one or more web applications. One disadvantage of doing business on the Internet is that if the web site goes down, becomes unresponsive or otherwise is not properly serving customers, the business is losing potential sales and/or customers. Thus, there is a need to monitor live web applications and web sites to make sure that they are running properly.
One particular scenario that web application developers seek to avoid is a routine that stalls. A routine typically is started, performs a task and ends. A stalled routine will start its task and either never complete its task or run so slowly that the system is better off canceling the routine. For example, it may be expected that a routine will take a fraction of one second to complete its task; however, due to something going wrong, the routine is still running after 7 seconds. In this case, the routine is considered stalled. It is still possible that the routine may finish. It is also possible that the routine will never finish. Typically, a stalled routine is a bounded operation that has continued to be active significantly past a reasonable time of completion, where the definition of reasonable is operation dependent.
A stalled routine can degrade performance of a web site, degrade performance of a web application, and cause an application to fail or cause a web site to fail. Thus, there is a need to detect when a routine has stalled.
Some prior attempts to determine whether a routine has stalled have involved the software developer including source code in the routine that informs another entity that the routine is still functioning in a normal manner. This system, however, requires the source code to be manually edited to insert the additional code. In some cases, the source code is not available and, therefore, the technique cannot be used. Additionally, the software developer is responsible for adding the code and many software engineers do not want to add extra code that is unnecessary to the intended functions of the software.
Another prior attempt to determine whether a routine has stalled involves determining whether a program is responding to user inputs. Such functionality is common on many personal computer operating systems. While these systems can determine whether an entire application is stalled, they are unable to determine whether a routine within the application is stalled, if the application is still responding to user inputs.
Thus, there is a need to detect when a routine has stalled that overcomes the limitations of the prior art.